<?php
#============================
#	Filename: App.class.php
#	Note	: 应用程序类
#	Version : 1.0
#	Author  : prettyOrange
#	Update  : 2010-03-11
#============================
class App
{
	/**
     * 应用程序快捷入口
     */
	static public function run()
    {
		 App::init();
	}
	/**
     * 应用程序初始化
     */
	static public function init()
    {
		// 设定错误和异常处理
        //set_error_handler(array('App','appError'));
        //set_exception_handler(array('App','appException'));
		
		$defapp = 'main';
		$defmod = 'frame';
		if(!$_ENV['config']['isadmin'])
		{
			$defapp = 'index';
			$defmod = 'index';
		}
		
		//请求转发
		$app = empty($_REQUEST['app']) ? $defapp : $_REQUEST['app'];
		$mod = empty($_REQUEST['mod']) ? $defmod : $_REQUEST['mod'];
		define('APP',$app);
		define('MOD',$mod);
		$_ENV['app'] = APP;
		$_ENV['mod'] = MOD;
		$entity = $app;
		$app .= 'Action';
		$mod .= 'Module';
		if (!file_exists($_ENV['config']['controller_dir']."/{$app}.class.php")) $app = 'mainAction';
		echo $_ENV['config']['controller_dir']."/{$app}.class.php";
		$app = new ReflectionClass($app);
		call_user_func(array($app->newInstanceArgs(array()),$mod));
	}
	
	
	function syClass($class_name, $sdir = null)
	{
		if(preg_match("/^[a-zA-Z0-9_\-]*$/",$class_name)==0)
			halt("类定义不存在，请检查。");
		if(null != $sdir && !import($sdir) && !import($sdir.'/'.$class_name.'.php'))return FALSE;
		$has_define = FALSE;
		if(class_exists($class_name, false) || interface_exists($class_name, false))
		{
			$has_define = TRUE;
		}
		else
		{
			if( TRUE == import($class_name.'.php'))
			{
				$has_define = TRUE;
			}
		}
		if(FALSE != $has_define)
		{
			return new $class_name();
		}
		halt($class_name."类定义不存在，请检查。");
	}
}
?>